home *** CD-ROM | disk | FTP | other *** search
/ SPACE 1 / SPACE - Library 1 - Volume 1.iso / program / 70 / smalltlk.arc / INSTALLG next >
Text File  |  1988-01-11  |  17KB  |  388 lines

  1.     Littlle Smalltalk Installation Notes
  2.  
  3.  
  4. _✓2.  _✓S_✓p_✓e_✓c_✓i_✓f_✓i_✓c _✓M_✓a_✓c_✓h_✓i_✓n_✓e _✓I_✓n_✓s_✓t_✓a_✓l_✓l_✓a_✓t_✓i_✓o_✓n _✓I_✓n_✓s_✓t_✓r_✓u_✓c_✓t_✓i_✓o_✓n_✓s
  5.  
  6.     A single source form and command syntax cannot be used
  7. for all combinations of machine / operating systems, because
  8. of differences in library routine syntax or function availa-
  9. bility.    An   attempt   has  been  made  to  surround  the
  10. occurrences of such features  with  conditional  compilation
  11. directives, so that by defining or not defining a symbol the
  12. correct result can be produced on different systems.   These
  13. commands  have  all  been  collected  in  the  include  file
  14. parser/env.h, so for the most part this should be the  prin-
  15. ciple  file  needing  to  be  edited.   In addition, ``meta-
  16. defines'' are provided for many systems to which the  Little
  17. Smalltalk  system  has already been ported.  By defining one
  18. of these ``meta-defines'', correct values are given for  the
  19. remainder of the symbols.
  20.  
  21.     There are a few places where path specifications must
  22. be  given  in the  C sources.   These are  described  in the
  23. following sections.
  24.  
  25.     Finally, bytecodes are kept in the form of ``unsigned
  26. characters'';  that  is,  characters containing numbers from
  27. 0-255.  These  may  or  may  not  be  supported  on  various
  28. machines.   The file parser/env.h contains a typedef for the
  29. type `uchar' and two macros  for  converting  from  unsigned
  30. characters  to  integers  and  back  again.  These should be
  31. defined in such a manner that  the  appearance  of  unsigned
  32. characters  is  achieved,  whether  or not they are actually
  33. supported.   Generally,  either  the  model  of the  VAX-780
  34. or the PDP11/70 should be sufficient.
  35.  
  36.  
  37. _✓2._✓1.  _✓B_✓r_✓i_✓n_✓g_✓i_✓n_✓g _✓L_✓i_✓t_✓t_✓l_✓e _✓S_✓m_✓a_✓l_✓l_✓t_✓a_✓l_✓k _✓U_✓p _✓o_✓n _✓a _✓N_✓e_✓w _✓S_✓y_✓s_✓t_✓e_✓m
  38.  
  39.     If the system you are attempting to port to is not one
  40. of  the  systems described in the following sections, a cer-
  41. tain amount of experimentation will probably be necessary to
  42. successfully install the system.  This section will describe
  43. some of the major changes required; what other  changes  may
  44. be necessary is generally unpredictable.
  45.  
  46.     The file  parser/env.h  contains various hard paths,
  47. which  are  described  in that file.  Also in that file, the
  48. following symbols  should  be  defined  or  left  undefined,
  49. depending upon the availability of various features.
  50.  
  51. CURSES      This symbol should be defined if it is desired  to
  52.       provide  the  simple  ascii  graphics given by the
  53.       curses  and  termcap  packages.   See  section  on
  54.       graphics below.
  55.  
  56. ENVSAVE   This symbol should be defined if it  is  necessary
  57.       to  save  the  value of the global varible _✓e_✓n_✓v_✓i_✓r_✓o_✓n
  58.       during a  fastload.   This  is  necessary  on  the
  59.       11/70, IBM PC, possibly other machines.
  60.  
  61. FACTMAX   This symbol should be defined to  be  the  largest
  62.       integer for which the factorial can be computed by
  63.       repeated multiplication  without  overflow.   This
  64.       value  is  generally  12 for 32 bit machines and 8
  65.       for 16 bit machines.
  66.  
  67. FASTDEFAULT     This symbol should be defined if the default
  68.       behavior of the system should be to perform a fast
  69.       load on the standard prelude (see section 3).
  70.  
  71. FLUSHREQ  If defined a fflush() is given after every call to
  72.       printf.
  73.  
  74. GAMMA    This symbol should be defined if the gamma() func-
  75.       tion  is  part  of the standard math library, left
  76.       undefined otherwise.
  77.  
  78. INLINE      This symbol should be defined if in-line  code  is
  79.       desired  for object increments and decrements.  In
  80.       line code is generally slightly  faster,  although
  81.       the  code size is slightly larger.  If this symbol
  82.       is not defined subroutine calls will be  generated
  83.       for object increments and decrements.
  84.  
  85. NOSYSTEM  This symbol should be defined on non-unix  systems
  86.       for  which the ``system()'' call is not supported.
  87.       As this seriously limits functionality (i.e. class
  88.       descriptions  cannot be modified during execution)
  89.       is should not be used unless necessary.
  90.  
  91. OPEN3ARG  This symbol should  be  defined  if  Berkeley  4.2
  92.       style  open statements (3 arguments) are used.  If
  93.       the older, 2 argument, format is used this  symbol
  94.       should be left undefined.
  95.  
  96. PLOT3      This symbol should be defined if you  have  termi-
  97.       nals  for  which  the  plot(3)  routines can write
  98.       directly to the screen, rather  than  requiring  a
  99.       postprocessing  filter.   See  section on graphics
  100.       below.
  101.  
  102. SETJUMP   This   symbol   should   be   defined    if    the
  103.       setjump/longjump  facility  is available.  This is
  104.       used ONLY in the file sources/process.c to  imple-
  105.       ment recovery when the user has typed an interrupt
  106.       character.
  107.  
  108. SHORTDATA If this symbol is defined various  heuristics  are
  109.       used  to  reduce  the  data  segment  size, at the
  110.       expense  of  functionality  or  execution   speed.
  111.       Should only be defined if absolutely necessary.
  112.  
  113. SIGS      This symbol  should  be  defined  if  the  signals
  114.       facility  is  available.  This is used ONLY in the
  115.       file sources/process.c to implement recovery  when
  116.       the user has typed an interrupt character.
  117.  
  118.  
  119. _✓2._✓2.  _✓B_✓e_✓r_✓k_✓e_✓l_✓e_✓y _✓l_✓o_✓o_✓k_✓a_✓l_✓i_✓k_✓e_✓s
  120.  
  121.     It has been reported that following the directions  for
  122. Berkeley  4.2  (below)  is also sufficient for the following
  123. systems:
  124.  
  125.     Amdahl / System V
  126.     Pyramid 90x / System V
  127.     Sequent Balance 8000
  128.  
  129.  
  130. _✓2._✓1_✓1.  _✓V_✓A_✓X _✓7_✓8_✓0 / _✓B_✓e_✓r_✓k_✓e_✓l_✓e_✓y _✓4._✓2
  131.  
  132.     In parser/env.h the ``meta-define''  BERK42  should  be
  133. given,  and  any  other meta-defines removed.  Also in env.h
  134. the paths in the strings TEMPFILE, PARSER and PRELUDE should
  135. be defined.
  136.  
  137.     (VAX only) If the -g flag is used the  define  FLUSHREQ
  138. need  not be given (although it will work if it is present),
  139. otherwise FLUSHREQ should be defined in order for input  and
  140. output to interleave correctly.
  141.  
  142.     As distributed, the system does not perform a fastload
  143. (see  next  section)  automatically.  If fastload works this
  144. can be made default by defining the symbol FASTDEFAULT.
  145.  
  146.     These instructions appear to  work  also for the SUN
  147. workstation;  of  course,  if you have a SUN workstation you
  148. can run the Xerox system.
  149.  
  150. _✓3.  _✓F_✓a_✓s_✓t _✓L_✓o_✓a_✓d_✓i_✓n_✓g
  151.  
  152.     The Little Smalltalk system has the ability to save and
  153. restore a user environment by basically moving a copy of all
  154. of the users data space into a file.  Although this produces
  155. rather  large  files,  the  savings in time permitted by not
  156. having to recreate a specific environment  can  be  substan-
  157. tial.   Because  this  is such an unusual thing to do, it is
  158. probably  wise,  if  installing  the   system   on   a   new
  159. machine/operating  system,  to  first comment out the define
  160. for FASTDEFAULT in parser/env.h, which will install a system
  161. which will not default to doing a fast load.
  162.  
  163.     Once such a system has been created and passed all self
  164. tests, you can experiment with fast loading by executing the
  165. st command with the argument -f.  For test cases you can use
  166. the  programs  in  /tests.   If it appears to be successful,
  167. then (by  defining  the  variable  FASTDEFAULT)  you  should
  168. regenerate  the system so that the default behavior is to do
  169. a   fast   loading.    (When   regenerating   the    system,
  170. sources/main.c  should be the only file needing to be recom-
  171. piled).
  172.  
  173.     Fastloading does not currently work on the HP-9000.  It
  174. may not work on other machines as well.
  175.  
  176. _✓4.  _✓P_✓r_✓o_✓t_✓e_✓c_✓t_✓i_✓o_✓n_✓s
  177.  
  178.     The directories /sources and /parser need not be read-
  179. able  by  casual  users.   The  directory  /prelude contains
  180. files, however, which must be loaded by the Little Smalltalk
  181. system  prior  to  every  execution.  The protection of this
  182. directory, and on the files in it, should therefore be  such
  183. that  all  users  have  READ  access.   Although  the /tests
  184. directory is only used during system installation, users may
  185. want  to  refer to it for examples of class descriptions and
  186. to see how various problems (8 queens, dinning philosophers)
  187. have been solved in Smalltalk.  Allowing all users access to
  188. the /docs directory will permit a kind  of  on-line  access,
  189. however  users  should not be allowed to modify any files in
  190. any directory.
  191.  
  192. _✓5.  _✓N_✓o_✓n-_✓U_✓N_✓I_✓X _✓s_✓y_✓s_✓t_✓e_✓m_✓s
  193.  
  194.     Non-UNIX* systems which do not  support  multiple  user
  195. processes, and thus the system() call, cannot at current run
  196. Little Smalltalk.  There are plans, however, to at some time
  197. in  the  future  support  such  systems.   This section will
  198. describe,  in  broad  terms,  the  changes  required.    The
  199. detailed changed are, of course, at the moment not known.
  200.  
  201.     First, the defined value  NOSYSTEM  must  be  given  in
  202. parser/env.h.  This will cause all occurrences of the ``sys-
  203. tem()'' call to be commented  out,  and  in  most  cases  be
  204. replaced by error messages.
  205.  
  206.     Next, the parser must be modified to place  its  output
  207. in  a  file  (presumably the file given as argument with .st
  208. replaced by .p) instead of the standard output.  This  is  a
  209. trivial, although probably system specific, change.
  210.  
  211.     In use, the user would then be required to  ``compile''
  212. all  class  descriptions by running the parser (which there-
  213. fore would have to be user accessible program)  before  run-
  214. ning  the  Little  Smalltalk system.  Little Smalltalk could
  215. not be used to edit class descriptions on the fly - the user
  216. would have to leave the system, perform the edit, and return
  217. to the system.  This would seriously limit functionality and
  218. utility, but that is cost of not running UNIX!
  219.  
  220. _✓6.  _✓G_✓r_✓a_✓p_✓h_✓i_✓c_✓s
  221.  
  222.     The nice bit-mapped graphics display of the  Smalltalk-
  223. 80  system  is,  unfortunately, not very portable to conven-
  224. tional machines running conventional  ascii  terminals.  Two
  225. mutually  exclusive  approaches have been furnished for pro-
  226. viding v✓v✓v✓ve✓e✓e✓er✓r✓r✓ry✓y✓y✓y rudimentary but nevertheless relatively  device-
  227. independent graphics capabilities.
  228.  
  229.     The first approach used the  curses(3)  and  termlib(3)
  230. routines to provide simple ascii (character-level) graphics.
  231. To use these, define the symbol CURSES in parser/env.h,  and
  232. modify   the  Makefile  in  /sourses  adding  the  libraries
  233. -lcurses and -ltermlib (or termcap, whichever  is  appropri-
  234. ate) to the symbol LIB.
  235. _________________________
  236. * UNIX is a trademark of AT&T Bell Laboratories.
  237.  
  238.     The functionality so provided can be described as  fol-
  239. lows:
  240.  
  241. clearScreenThis message is accepted by  the  pseudo-variable
  242.       smalltalk and clears the screen.
  243.  
  244. printAt:  This message is accepted  by  instances  of  class
  245.       String.   The argument must be a point, represent-
  246.       ing a line@column pair.  The string is printed  at
  247.       the point.
  248.  
  249.     In addition, there is a class F✓F✓F✓Fo✓o✓o✓or✓r✓r✓rm✓m✓m✓m found  in  /prelude,
  250. which  is  an  attempt  at  providing simple graphics forms.
  251. Instances of F✓F✓F✓Fo✓o✓o✓or✓r✓r✓rm✓m✓m✓m also repond to printAt:.  A sample program
  252. plane.st  can  be  found  in /tests illustrating some of the
  253. features of forms.  Refer to the Makesfiles in /prelude  and
  254. /tests for more information.
  255.  
  256.     The second approach uses the plot(3) routines.  On some
  257. terminals  (the  Tektronix 4014, for example) these routines
  258. can be set up to write  directly  to  the  terminal  screen,
  259. rather  than going through a postprocessing filter.  If such
  260. a device is available, the symbol PLOT3 should be defined in
  261. parser/env.h,  in  addition  appropriate  loader commands (-
  262. l4014, for example) should be added to  the  symbol  LIB  in
  263. sources/Makefile.
  264.  
  265.     The functionality so provided is the ability to produce
  266. lines,  circles and arcs.  Various classes (Pen, PenSave and
  267. Form) for doing this are provided in the /prelude  subdirec-
  268. tory,  consult  the  Makefile  for  details.  A test program
  269. (penshow) is provided in the /tests subdirectory.
  270.  
  271. _✓7.  _✓T_✓r_✓o_✓u_✓b_✓l_✓e_✓s_✓h_✓o_✓o_✓t_✓i_✓n_✓g
  272.  
  273.     Here are a few of the problems you might run into,  and
  274. possible solutions:
  275.  
  276.     The first thing  to  suspect  if  you  observe  strange
  277. behavior is the fastloading feature.  Try running the system
  278. with the -m flag, which  will  turn  off  fastloading.   For
  279. example,  on  the 11/70 fastloading will inhibit the )i com-
  280. mand from working correctly, but no error messages  will  be
  281. generated.   The  appearance  of a message such as ``_✓x_✓x_✓x: is
  282. not an identifier'', or of can't happen message number 23 is
  283. also  a  clue  that  fastloading does not work and should be
  284. disabled.  Similarly, the appearance  of  the  message  ``no
  285. such  context as: _✓x_✓x_✓x/stdsave'' during startup is an indica-
  286. tion that the file containing the saved binary form  of  the
  287. standard  prelude either does not exist or is unreadable, or
  288. that the path given in parser/env.h is wrong.
  289.  
  290.     The appearence of the message ``xxx:  not  an  identif-
  291. ier''  following  a  fast load or a )l command may be a sign
  292. that the environment pointer is being trashed.   Try  defin-
  293. ing the symbol ENVSAVE and recreating the system.
  294.  
  295.     Solutions to problems with fastloading are to try to to
  296. recreate  the  stdsave file in /prelude, or as a last resort
  297. to remove the definition for FASTDEFAULT from /parser/env.h,
  298. ``make  clean''  and recompile everything.  This latter step
  299. will configure a system that will  not  attempt  fastloading
  300. unless explicitly called for.
  301.  
  302.     If the function _gamma is undefined following load  for
  303. st.   Solution:  remove the definition for the symbol GAMMA,
  304. ``make clean'' and recompile.
  305.  
  306.     ``Can't happen number 1''.  If you are  running  on  a
  307. machine  with  small  memory,  your program creates too many
  308. objects and runs out of memory.  If you are running on a vax
  309. or other large machine - your application is creating cycles
  310. or many many objects, probably a programming error.
  311.  
  312.     No output appears when you start the  program,  and  if
  313. you type control-D all the output appears.  Solution: define
  314. the symbol FLUSHREQ and recompile.
  315.  
  316.     Can't happen number 22 - either TEMPFILE is unreadable,
  317. or /prelude/standard does not exist.
  318.  
  319.     Systems that have trouble with long lines may have dif-
  320. ficulty  with the file syms.c in /sources (there is one line
  321. in that file over 300 characters long).  If necessary,  this
  322. file  can  (and  will  be)  automatically reconstructed from
  323. other files in the directory.
  324.  
  325.     Receiving error number 129 whenever  any  non-primitive
  326. class  method is called may be a symptom of a clash of vari-
  327. able names.  On older systems the  variables  runningProcess
  328. and  runningInterpreter  would clash on systems that did not
  329. support long variable  names.   The  variable  runningInter-
  330. preter  (in  process.c) has since been changed to presentIn-
  331. terpreter, so this problem  should  not  occur  in  software
  332. taken from more recent distribution tapes.
  333.  
  334.     129 errors can also be caused  by  bad  preludes.   Try
  335. removing  all  the .p files from /prelude and remaking stan-
  336. dard.  (Frequently, if  you  receive  an  error  when  first
  337. building   the  prelude,  some  of  the  .p  files  will  be
  338. incorrect).
  339.  
  340.     Note that /sources and /prelude have make instructions
  341. ``make  clean''  which remove object files and are useful in
  342. insuring the files are in a clean state  before  starting  a
  343. reconstruction of the system.
  344.  
  345.  
  346. _✓8.  _✓F_✓u_✓r_✓t_✓h_✓e_✓r _✓D_✓i_✓s_✓t_✓r_✓i_✓b_✓u_✓t_✓i_✓o_✓n
  347.  
  348.     The Little Smalltalk system is public domain,  and  may
  349. be  distributed  further  as  long  as proper attribution is
  350. given in all published references.
  351.  
  352.     In the interests of keeping the distribution up to date
  353. and  as  error  free  as  possible, we wish to keep track of
  354. known sites using the system.  People  interested  in  being
  355. placed  on the mailing list for future bug announcements and
  356. new version announcements should contact Professor Budd,  at
  357. the   address  listed  below.   Changes,  modifications,  or
  358. improvements to the code or the standard library can be sub-
  359. mitted  also, and will be considered for inclusion in future
  360. distributions.
  361.  
  362. _✓9.  _✓W_✓h_✓a_✓t _✓t_✓o _✓d_✓o _✓w_✓i_✓t_✓h _✓B_✓U_✓G_✓S
  363.  
  364.     Observed irregularities in  Little  Smalltalk  behavior
  365. during  execution  (hereafter  known  as ``Bugs'') should be
  366. reported to:
  367.  
  368.     Professor Tim Budd
  369.     Little Smalltalk Distribution
  370.     Department of Computer Science
  371.     The University of Arizona
  372.     Tucson, Arizona  85721  USA
  373.  
  374.     CSNET address:  budd@arizona
  375.     UUCP  address:  ihnp4!arizona!budd
  376.  
  377.  
  378. The report of the bug should indicate whether it is reprodu-
  379. cible,  and if so how it is manifested.  If it is available,
  380. a description of the fix for the bug should be given, and it
  381. will  be  incorporated  into future distributions.  Periodi-
  382. cally, a listing of known bug fixes will be mailed to  known
  383. sites.
  384.  
  385.     The Little  Smalltalk system  is distributed without
  386. responsibility for the performance of the system and without
  387. any guarantee of maintenance.
  388.